package com.zw.mes.module.transpositionManager.controller;

import com.zw.mes.base.BaseController;
import com.zw.mes.common.JsonResult;
import com.zw.mes.entity.flow.FlowRoute;
import com.zw.mes.entity.flow.FlowTrans;
import com.zw.mes.entity.sys.User;
import com.zw.mes.module.transpositionManager.model.CheckModel;
import com.zw.mes.module.transpositionManager.model.FlowModel;
import com.zw.mes.module.transpositionManager.model.FlowTransModel;
import com.zw.mes.module.transpositionManager.service.TranspositionApplyCheckService;
import com.zw.mes.util.ShiroUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @className: TranspositionApplyController
 * @description: 历史申请控制层
 * @author： 徐一贺 18341916590
 * @date： 2021/4/27 16:48
 * @office: 智能控制设计科
 * @research institute： 智能控制设计所
 * @department： 机械设计院
 * @company: 辽宁忠旺机械设备制造有限公司
 * @group： 忠旺集团
 * @version: 1.0
 */
@Controller
@RequestMapping("/transposition/historicalApply")
public class TranspositionHistoricalApplyController extends BaseController {
    @Autowired
    private TranspositionApplyCheckService service;

    /**
     * @methodName: page
     * @description: 跳转到历史申请页面
     * @param: model
     * @return： java.lang.String
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/27 16:50
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @GetMapping
    @RequiresPermissions("tran:history:view")
    public String page(Model model) {
        User user = service.getUserInfoByPrimaryKey(ShiroUtils.getUserId());
        model.addAttribute("user", user);
        return "/transposition/historicalApply/page";
    }


    /**
     * @methodName: list
     * @description: 获取转序信息
     * @param: param
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/23 15:36
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/list")
    @RequiresPermissions("tran:history:view")
    public JsonResult list(FlowModel param) {
        startPage();
        return jsonResult(service.findHisApplyList(param));
    }


    /**
     * @methodName: cancelApply
     * @description: 撤销申请
     * @param: trans
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/28 8:24
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/cancel/apply")
    @RequiresPermissions("tran:history:check")
    public JsonResult cancelApply(FlowTrans trans){
        //当前转序单
        FlowTransModel flowTrans = service.getTrans(trans.getId());
        //当前路线
        FlowRoute currentFlowRoute = service.getFlowRouteByPrimaryKey(flowTrans.getRouteId());
        //断下序申请数量是否为0，如果是0就可撤销
        if((currentFlowRoute.getCheckNum()==null || currentFlowRoute.getCheckNum()==0) || currentFlowRoute.getApplyNum()-currentFlowRoute.getCheckNum()>=flowTrans.getNum()){
            if(service.cancelApply(trans)>0){
                return success("撤销申请成功！");
            }else {
                return success("撤销申请成功！");
            }
        }
        //如果不为0，则不可撤销
        else {
            return error("此转序已质检无法撤销申请！");
        }
    }

    /**
     * @methodName: repeatApply
     * @description: 重新申请质检
     * @param: trans
     * @return： com.zw.mes.common.JsonResult
     * @exception： 
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/28 8:36
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/repeatApply")
    @RequiresPermissions("tran:history:check")
    public JsonResult repeatApply(FlowTrans trans){
        return service.repeatApply(trans);
    }

    /**
     * @methodName: delApply
     * @description: 删除申请
     * @param: trans
     * @return： com.zw.mes.common.JsonResult
     * @exception：
     * @author： 徐一贺 tel:18341916590
     * @designer： 陈欣
     * @leader： 陈欣 tel:18104194240
     * @date： 2021/4/28 8:42
     * @office: 智能控制设计科
     * @research institute： 智能控制设计所
     * @department： 机械设计院
     * @company: 辽宁忠旺机械设备制造有限公司
     * @group： 忠旺集团
     * @version: 1.0
     */
    @ResponseBody
    @PostMapping("/delApply")
    @RequiresPermissions("tran:history:check")
    public JsonResult delApply(FlowTrans trans){
        return service.delApply(trans);
    }

}
